import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.TreeMap;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.*;
/**
 * Fenêtre de saisie d'un ouvrage Code du JFrame généré par Window Builder/Swing
 * Designer.
 * 
 * @author IUT, A.Culet
 * @version 1.0
 */
public class VueSaisieOuvrage extends Vue {

	private JPanel contentPane;
	private JTextField textFieldIsbn;
	private JTextField textFieldTitre;
	private JTextField textFieldDate;
	private JTextField textFieldEditeur;
	private JList listeAuteurs;
	private JList listeMotCle;
	private JButton buttonEnreg;
	private JButton buttonAnnuler;
    private JButton buttonRechercher;
    private JButton buttonNouvelAuteur;
    private JTextField textField;
    private JFrame frame;
    private JScrollPane scrollBar;
    
    public JFrame getFrame() {
		return frame;
	}
    
	/**
	 * Create the frame.
	 */
	public VueSaisieOuvrage(Controleur controleur) {
		super(controleur);
		setTitle("Enregistrement d'un nouvel ouvrage");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 483, 626);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNewLabel = new JLabel("Isbn");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(99, 62, 61, 15);
		contentPane.add(lblNewLabel);

		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(172, 59, 141, 19);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);

		JLabel lblNewLabel_1 = new JLabel("Titre");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(99, 146, 61, 15);
		contentPane.add(lblNewLabel_1);

		textFieldTitre = new JTextField();
		textFieldTitre.setBounds(172, 143, 225, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);

		JLabel lblNewLabel_2 = new JLabel("Date edition (MM/AAAA)");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_2.setBounds(6, 484, 154, 33);
		contentPane.add(lblNewLabel_2);

		textFieldDate = new JTextField();
		textFieldDate.setBounds(170, 490, 114, 19);
		contentPane.add(textFieldDate);
		textFieldDate.setColumns(10);

		JLabel lblAuteur = new JLabel("Auteur");
		lblAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblAuteur.setBounds(0, 196, 61, 15);
		contentPane.add(lblAuteur);

		JLabel lblEditeur = new JLabel("Editeur");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(22, 457, 61, 15);
		contentPane.add(lblEditeur);
		
		JLabel lblMotsCl = new JLabel("mot(s) cl\u00E9");
		lblMotsCl.setBounds(218, 196, 74, 14);
		contentPane.add(lblMotsCl);
		
		JButton buttonRechercher = new JButton("Rechercher");
		buttonRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){				
				String isbn = textFieldIsbn.getText();	
				getControleur().testOuvrage(isbn);
				}
		});
		buttonRechercher.setBounds(302, 89, 107, 25);
		contentPane.add(buttonRechercher);
		
		buttonEnreg = new JButton("Enregistrer");
		buttonEnreg.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				String isbn = textFieldIsbn.getText();
				String titre = textFieldTitre.getText();				
				Object[] m =listeAuteurs.getSelectedValues();					
				String editeur = textFieldEditeur.getText();
				String dateEdition = textFieldDate.getText();
					
				getControleur().nouvOuvrage(isbn, titre, m, editeur,
						dateEdition, null);
			}
		});
		buttonEnreg.setBounds(302, 528, 107, 25);
		contentPane.add(buttonEnreg);

		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueSaisieOuvrage.this);
			}
		});
		buttonAnnuler.setBounds(302, 564, 107, 25);
		contentPane.add(buttonAnnuler);
		
		JScrollPane scrollPaneAuteur = new JScrollPane();
		scrollPaneAuteur.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPaneAuteur.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPaneAuteur.setBounds(67, 200, 136, 157);
		contentPane.add(scrollPaneAuteur);
						
		listeAuteurs = new JList(getControleur().getAuteurs().values().toArray());
		scrollPaneAuteur.setViewportView(listeAuteurs);
		
		JScrollPane scrollPaneMotCle = new JScrollPane();
		scrollPaneMotCle.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPaneMotCle.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPaneMotCle.setBounds(298, 200, 136, 157);
		contentPane.add(scrollPaneMotCle);
		
		listeMotCle = new JList();		
		scrollPaneMotCle.setViewportView(listeMotCle);
		
		textFieldEditeur = new JTextField();
		textFieldEditeur.setBounds(170, 455, 183, 19);
		contentPane.add(textFieldEditeur);
		textFieldEditeur.setColumns(10);
		
		buttonNouvelAuteur = new JButton("Nouvel Auteur");
		buttonNouvelAuteur.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e){
					
					getControleur().fermerVue(VueSaisieOuvrage.this);
					getControleur().saisieAuteur();
				}
		});
		
		buttonNouvelAuteur.setBounds(62, 393, 141, 25);
		contentPane.add(buttonNouvelAuteur);
		
		//JScrollPane scrollBar = new JScrollPane(listeAuteurs);
		//scrollBar.setBounds(186, 200, 17, 157);
		//contentPane.add(scrollBar);
		
	}
	
	
	
	public void setEtat(int etat) {
		switch (etat) {
		case initiale: {
			buttonEnreg.setEnabled(false);
			buttonAnnuler.setEnabled(false);
			textFieldDate.setEditable(false);
			textFieldTitre.setEditable(false);
			listeAuteurs.setEnabled(false);
			textFieldEditeur.setEnabled(false);
		
			textFieldEditeur.setEditable(false);
			break;
		}
		case 1: {			
			buttonEnreg.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			textFieldDate.setEditable(true);
			textFieldTitre.setEditable(true);
			listeAuteurs.setEnabled(true);
			textFieldEditeur.setEnabled(true);

			textFieldEditeur.setEditable(true);
			break;
		}
		}
	}
}
